// str.match(/\s+/g);
// str.match(/\d+/g);
// 需求：已知 上面的方法可以匹配字符串中的空字符和数字字符，现在需要复用代码实现匹配数组元素的空字符和数字字符

const _ = require('lodash');

// function match(reg, str) {
//   return str.match(reg);
// }

const match = _.curry(function (reg, str) {
  return str.match(reg);
});

const haveSpace = match(/\s+/g);
const haveNum = match(/\d+/g);
// console.log('==>', haveSpace('hello word'));
// console.log('==>', haveNum('test 123'));

const filter = _.curry(function (f, arr) {
  return arr.filter(f);
});

console.log('==>', filter(haveSpace, ['li si', 'li_si']));

const findSpace = filter(haveSpace);
console.log('==>', findSpace(['li si', 'li_si']));

// 柯里化是函数式编程的重要概念，能够尽可能多的复用函数
